在下載資料的接口中,其實他們有提供參數可以客製化下載的需求,日期也是其中一個參數,不過我已經找不到之前參數的說明頁面了...囧,所以我就只介紹我已知道的參數,FOTT是資料下載格式,StartDate和EndDate分別是開始時間與結束時間,不過這邊需要注意的一點是這兩個欄位年份要用民國年份帶入,而且似乎不能跨天數下載,一次僅能下載一天的資料量,舉例來說:我要下載今年1月13日的行情資料,我的API 就是這樣帶。
http://data.coa.gov.tw/Service/OpenData/FromM/FarmTransData.aspx?FOTT=CSV&StartDate="106.01.13"&EndDate="106.01.13"
所以啦,假設我們的目標是下載今年一月的資料,那我們先定義範圍。
start <- as.Date("2017-01-01")
end <- as.Date("2017-01-31")
然後使用while 迴圈跑每一天
theDate <- start
while (theDate <= end){
theDate <- theDate + 1
}
別忘了下載的年份必須要是民國,要轉換成chineseDate。
theDate <- start
while (theDate <= end){
year <- as.integer(format(theDate,"%Y")) - 1911
month_date <- format(theDate,".%m.%d")
chineseDate <- paste0(year, month_date)
theDate <- theDate + 1
}
然後用paste0() 這個函式組出字串。
download.file(paste0(url, "&StartDate=", chineseDate, "&EndDate=", chineseDate),destfile = paste0("downloaded/file", chineseDate, ".csv"), method = "curl")
執行後,就只要等待他慢慢下載到完成
可以看到我的downloaded 資料夾放好了今年一月的所有csv 檔。
ref
day12原始碼